﻿@using KPIS.GERP.MVC.Classes
@using KPIS.GERP.SERVICE.Model
@model IEnumerable<KPIS.GERP.SERVICE.Model.rule_approve>
@{
    ViewBag.Title = "กฎอนุมัติ";
    List<hrm_ps_employees> emps = ViewBag.emp;
    var ruleApproveGroups = (List<rule_approve_group>)ViewBag.ruleApproveGroups;
    var ruleApproveTypes = (List<rule_approve_type>)ViewBag.ruleApproveTypes;
    var users = (List<sys_sc_users>)ViewBag.user;
    var poses = HttpHelper.GetPositions();
}
<h2>@ViewBag.Title</h2>

<table id="box-table-a" style="width:90%">
    <thead> 
        <tr>
            <th>
                <span style="visibility: collapse">กฎอนุมัติรายขั้นตอน</span>
            </th>
            <th>
                <span style="visibility: collapse"> กฎอนุมัติ</span>
            </th>
            <th>
                ประเภทการอนุมัติ
            </th> 
            <th>
                ประเภทผู้อนุมัติ
            </th> 
            <th>
                ขั้นตอนที่
            </th>
            <th>
                ผู้อนุมัติ
            </th>
            <th>
                ตำแหน่ง
            </th>
            <th>
                ชื่อ
            </th>
            <th>
                UserName
            </th>
        </tr>
    </thead>
    <tbody>
        
    @foreach (var ruleApproveGroup in ruleApproveGroups)
    {
        var ruleAppTypeThis = (from rt in ruleApproveTypes where rt.rule_approve_group_seq == ruleApproveGroup.rule_approve_group_seq select rt).ToList();

        <tr><td colspan="9"><h5><b>กลุ่มการอนุมัติ @ruleApproveGroup.rule_approve_group_name (@ruleAppTypeThis.Count ประเภท)</b></h5></td></tr>

        int i = 1;

        foreach (rule_approve_type ruleApproveType in ruleAppTypeThis)
        {
            var firstRuleApprove = ruleAppTypeThis.FirstOrDefault(o => true);
            var ruleAppThis = (from r in Model where r.rule_approve_type_seq == ruleApproveType.rule_approve_type_seq select r).ToList();

            <tr><td colspan="9">&nbsp;&nbsp;@(i++) &nbsp;ประเภทการอนุมัติ @(ruleApproveType != null ? ruleApproveType.rule_approve_type_name : "-") (@ruleAppThis.Count() ขั้นตอน)</td></tr>

            foreach (rule_approve r in ruleAppThis)
            {
                hrm_ps_employees empObj = null;
                sys_sc_users user = null;
                string emp_name = "?";
                string pos_name = "?";
                string user_name = "";
                if (r.approver_type == "1")
                {
                    emp_name = null;
                    pos_name = "<span style='color:red'>คำนวนจากตอนสร้างคำขอ</span>";
                    user = null;
                    user_name = "";
                }
                else if (r.approver_type == "2")
                {
                    empObj = (from emp in emps where emp.pos_seq == r.approver_seq select emp).FirstOrDefault();
                    emp_name = empObj == null ? "-" : empObj.full_name;
                    pos_name = empObj != null && empObj.hrm_mp_positions != null ? empObj.hrm_mp_positions.pos_name : "<span style='color:red'>เลขอ้างอิงอ้างถึงตำแหน่งที่ไม่มี</span>";
                    user = (from u in users where empObj != null && empObj.emp_seq == u.emp_seq select u).FirstOrDefault();
                    user_name = user == null ? "<span style='color:red'>ไม่สามารถดึงข้อมูลผู้ใช้ระบบ</span>" : user.user_code;
                }


                <tr>
                    <td> 
                        <span style="visibility: collapse"> (@r.rule_approve_seq)</span>
                    </td>
                    <td> 
                        <span style="visibility: collapse"> @r.rule_approve_type_seq</span>
                    </td>  
                    <td>
                        @(r.rule_approve_type != null ? r.rule_approve_type.rule_approve_type_name : "-")
                    </td>
                    <td>  
                        @switch (r.approver_type)
                        {
                                // (1 = หัวหน้า, 2 = ตำแหน่ง, 3 สังกัด, 4, กลุ่ม)
                            case "1":
                                @Html.Raw("โดยหัวหน้าของผู้สร้างคำขอ")
                                break;
                            case "2":
                                @Html.Raw("ระบุตำแหน่ง")
                                break;
                            case "3":
                                @Html.Raw("กระจายให้หน่วยงาน")
                                break;
                            case "4":
                                @Html.Raw("กระจายให้กลุ่มของผู้ใช้")
                                break;
                            default:
                                @Html.Raw(string.Format("ไม่ทราบเคส \"{0}\"", r.approver_type))
                                break;
                        }
                    </td>
                    <td> 
                        @r.step
                    </td>
                    <td> 
                        @(!r.approver_seq.HasValue || r.approver_seq.Value == 0 ? "-" : r.approver_seq.ToString())
                    </td>
                    <td> 
                        @Html.Raw(pos_name)
                    </td>
                    <td> 
                        @emp_name
                    </td>
                    <td> 
                        @Html.Raw(user_name)
                    </td>
                </tr>
            }
        }
    }
    </tbody>
</table>